#ifndef ACCESSTOKENTIMER_H
#define ACCESSTOKENTIMER_H

#include <QObject>
#include <QTimer>

class BackendService;
class QNetworkAccessManager;
class ExchangeAccessTokenCommand;

// AccessTokenTimer 类
// 负责定时（1小时）执行 ExchangeAccessTokenCommand::execute 来刷新 AccessToken
class AccessTokenTimer : public QObject
{
    Q_OBJECT

public:
    explicit AccessTokenTimer(QObject *parent = nullptr);
    ~AccessTokenTimer();
    
    // 设置 BackendService 实例
    void setBackendService(BackendService *backendService);
    
    // 设置 QNetworkAccessManager 实例
    void setNetworkAccessManager(QNetworkAccessManager *networkManager);
    
    // 启动定时器
    void start();
    
    // 停止定时器
    void stop();
    
    // 检查定时器是否正在运行
    bool isActive() const;
    
    // 立即执行一次 AccessToken 刷新（不等待定时器）
    void refreshNow();

private slots:
    // 定时器超时槽函数
    void onTimerTimeout();

private:
    // 执行 AccessToken 刷新
    void executeRefresh();
    
    // 获取当前选中的公司ID
    QString getCurrentDomainId() const;

private:
    QTimer *m_timer;
    ExchangeAccessTokenCommand *m_exchangeAccessTokenCommand;
    BackendService *m_backendService;
    QNetworkAccessManager *m_networkManager;
    
    // 定时器间隔（1小时 = 3600000 毫秒）
    static const int TIMER_INTERVAL_MS = 3600000;
};

#endif // ACCESSTOKENTIMER_H

